﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using Website.Logger;
using DAL;
using BOL;
using WebLib;
using System.Web.Script.Services;
using System.Web.Services;
using UtilityExtensions;

namespace UILGestion.Admin.CajaChica
{
    public partial class CajaEditForm : System.Web.UI.Page
    {
        public CajaEditForm()
        {
            bol = new CajaBL();
        }
        private BOL.CajaBL bol;


        [WebMethod(), ScriptMethod()]
        public static string GetEmpleado(String prefixText, String contextKey)
        {

            EmpleadoBL bol = new EmpleadoBL();
            return bol.getEmpleadoAll(prefixText, 20);
        }



        protected void btnContinue_OnClick(object sender, EventArgs e)
        {
          //  saveButton.Enabled = false;
            try
            {

                if ((sender as Button).Text == "Guardar")
                {
                    if (type.Value == "A")
                    {
                        int id = bol.Add(descripcionTextBox.Text,
                            idCustodioTextBox.Text.ToInt(),
                            ObraDropDownList.SelectedValue.ToInt(),
                            monedaddl.SelectedValue.ToInt(),
                            montoTxt.Text.ToDecimal().Value);
                        idInternal.Value = id.ToString();
                    }
                    if (type.Value == "E")
                    {
                        bol.Update(idInternal.Value.ToInt(),
                                descripcionTextBox.Text,
                                idCustodioTextBox.Text.ToInt(),
                                montoTxt.Text.ToDecimal().Value);
                    }

                    
                    Response.Redirect("CajaReadForm.aspx?id=" + idInternal.Value, true);
                }
                if ((sender as Button).Text == "Cancelar")
                {
                    Response.Redirect("CajaListForm.aspx");
                }
                if ((sender as Button).Text == "refreshButton")
                {
                    FormatForm();
                }


            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);

                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }




        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                idInternal.Value = (string)Request.QueryString["id"];
                type.Value = (string)Request.QueryString["type"];

                menuCtrl1.loadMenuSeguridad();
                FormatForm();  
            }

        }
        public void ShowComboBox()
        {


            empresaDDL.DataTextField = "descripcion";
            empresaDDL.DataValueField = "idInternal";

            empresaDDL.DataSource = DbUtil.Db.Empresas;
            empresaDDL.DataBind();
            
            ObraDropDownList.DataTextField = "descripcion";
            ObraDropDownList.DataValueField = "idInternal";

            proyectoDropDownList.DataTextField = "descripcion";
            proyectoDropDownList.DataValueField = "idInternal";
           
                  
            monedaddl.DataTextField = "descripcion";
            monedaddl.DataValueField = "idInternal";


           


            monedaddl.DataSource = new ListValueBL().GetMoneda();
            monedaddl.DataBind();

            if (type.Value == "A")
            {
                loadProyect();
                loadObra();               
                
            }
        }

        public void FormatForm()
        {

            ShowComboBox();
            montoTxt.Text = "0";

            if (type.Value == "E")
            {

                var caja = DbUtil.Db.Cajas.SingleOrDefault(p => p.idInternal == idInternal.Value.ToInt());
                idLabel.Text = caja.idInternal.ToString();
                descripcionTextBox.Text = caja.descripcion;
                custodioTextBox.Text =caja.Empleado.descripcion;
                custodio2TextBox.Text = caja.Empleado.descripcion;
                idCustodioTextBox.Text = caja.Empleado.idInternal.ToString();
                empresaDDL.SelectedValue = caja.Obra.Proyecto.idEmpresa.ToString();
                montoTxt.Text = caja.montoAsignado.ToString();
                loadProyect();
                proyectoDropDownList.SelectedValue = caja.Obra.idProyecto.Value.ToString();
                loadObra();
                
                ObraDropDownList.SelectedValue = caja.idObra.ToString();
                proyectoDropDownList.Enabled = false;
                ObraDropDownList.Enabled = false;
                monedaddl.SelectedValue = caja.idMoneda.ToString();
            }
        }
        private void loadObra()
        {
            ObraDropDownList.DataSource = DbUtil.Db.Obras.Where(p => p.idProyecto == proyectoDropDownList.SelectedValue.ToInt()).ToList();
            ObraDropDownList.DataBind();
        }

        private void loadProyect()
        {
            proyectoDropDownList.DataSource = new ListValueBL().GetProyectoComprasXEmpresa(empresaDDL.SelectedValue.ToInt());
            proyectoDropDownList.DataBind();
        }

        protected void proyectoDropDownList_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (proyectoDropDownList.SelectedValue.ToInt() > 0)
            {
                loadObra();
            }
        }

        protected void ObraDropDownList0_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void empresaDDL_SelectedIndexChanged(object sender, EventArgs e)
        {
            loadProyect();
            loadObra();
        }
    }
}